Shader Theory(GLSL)
シェーダーのセオリーっぽいやつ
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
定数
code:const.GLSL
// pi
// これ以外にも2πやπ / 2、π / 4などを定数として用意するのも有用
const float PI = 3.1415926;
// epsilon
// レイマーチで衝突判定で使ったり法線推測で使うやつ
// イプシロンとはちっちゃな数字のこと
// レイマーチ用途ではせいぜい0.001とかで良い
// 四面体での法線なら.01とかにする
const float EPS = .001;
// Golden Ratio
// 黄金比
const float PHI = 1.618033988749894848;
const float golden = PI*(3.-sqrt(5.)); // golden angle 2.39996 radians
// icosahedron
// Gamma Correction
// ガンマ補正で使う定数
const float RECIPROCAL_GAMMA = 0.454545; // RECIPROCAL_GAMMA, 輝度=電圧出力率^1/2.2
// col = pow(col, 0.4545);
多角形
code:Polygon.GLSL
void main(){
vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / min(resolution.x,resolution.y);
vec3 col=vec3(.8);
float n=3.; // ここに角の数をセットする
float d = 2.*PI/n;
float a = atan(p.y, p.x)+PI;
float r = length(p);
float fg = cos(floor(.5+a/d)*d-a)*r;
fg=step(fg,.5);
col*=fg;
gl_FragColor = vec4(col, 1.0);
}
HUE
code:HUE.GLSL
#define hue(v) (vec3(1),(abs(mod(v*6.+vec3(0,4,2),6.)-3.)-1.)*0.5+0.3)